package com.atbeijing.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.{SparkConf, SparkContext}

object Spark13_Oper_Transform {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("TransformOperator")
        val sc = new SparkContext(conf)

        // TODO 算子 - 转换 - 双Value类型

        val rdd1 = sc.makeRDD(List(1,2,3,4), 2)
//        val rdd1 = sc.makeRDD(List("1","2","3","4"), 2)
        val rdd2 = sc.makeRDD(List(3,4,5,6), 2)

        // 不同类型的两个数据集无法实现交集,并集,差集的操作
        // 交集 : 3,4
        //println(rdd1.intersection(rdd2).collect().mkString(","))
        // 并集 : 1,2,3,4,3,4,5,6
        //println(rdd1.union(rdd2).collect().mkString(","))
        // 差集(减去交叉的部分) : 1,2
        //println(rdd1.subtract(rdd2).collect().mkString(","))

        // 不同类型的两个数据集可以实现拉链
        // Can only zip RDDs with same number of elements in each partition 两个集合的拉链操作分区内数据个数相同
        // Can't zip RDDs with unequal numbers of partitions: List(2, 3) 两个集合的拉链操作分区数相同
        val tuples: Array[(Int, Int)] = rdd1.zip(rdd2).collect()
        println(tuples.mkString(","))



        sc.stop()

    }
    class User {

    }
}
